#!/bin/bash

# 提示用户输入一个目录路径
read -p "路径: " dir_path

# 初始化变量来统计文件数量和总大小
total_files=0
total_size=0
declare -A file_types=()

# 检查目录是否存在
if [ ! -d "$dir_path" ]; then
    echo "错误：输入的路径不是一个有效的目录。"
    exit 1
fi

# 遍历目录及子目录中的所有文件
find "$dir_path" -type f | while IFS= read -r file; do
    # 获取文件类型
    file_type=$(file --mime-type -b "$file")
    
    # 统计文件数量和总大小
    ((total_files++))
    file_size=$(stat -c "%s" "$file")
    ((total_size += file_size))

    # 统计不同类型文件的数量和总大小
    if [ -n "${file_types[$file_type]}" ]; then
        file_types[$file_type]=$(( ${file_types[$file_type]} + 1 ))
    else
        file_types[$file_type]=1
    fi
done

# 输出统计结果
echo "目录 $dir_path 中的文件统计结果："
echo "-------------------------------------"
echo "总文件数: $total_files"

echo -e "\n各文件类型的统计："
for type in "${!file_types[@]}"; do
    echo "- 文件类型: $type，数量: ${file_types[$type]}，总大小: $(du -sh "$dir_path" | awk '{print $1}')"
done

echo -e "\n总文件大小: $(du -sh "$dir_path" | awk '{print $1}')"
